    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AreaListar.java
 *
 * Created on 07/05/2011, 11:01:09 AM
 */
package org.gingresos.contabilidad;

import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import org.gingresosapi.beans.*;
import org.gingresosapi.controller.*;
import org.gingresosapi.generales.Mensajeria;
import org.gingresosapi.reportes.clases.MyInformeDiarioSubgrupo;
import org.gingresos.start.MySesion;
import org.jdesktop.swingx.JXTipOfTheDay;
import org.jdesktop.swingx.tips.DefaultTip;
import org.jdesktop.swingx.tips.DefaultTipOfTheDayModel;
import org.jdesktop.swingx.tips.TipOfTheDayModel;

/**
 *
 * @author avbravo
 */
public class ContabilidadInformeDiarioSubGrupo extends javax.swing.JInternalFrame {

    DefaultTableModel modelo;
    int fila = -1;
    Bicicletas bicicletas1 = new Bicicletas();
    BicicletasController bicicletasController1 = new BicicletasController();
    Codigosrecargo codigosrecargo1 = new Codigosrecargo();
    CodigosrecargoController codigosrecargoController1 = new CodigosrecargoController();
    Comercios comercios1 = new Comercios();
    ComerciosController comerciosController1 = new ComerciosController();
    Contribuyentes contribuyentes1 = new Contribuyentes();
    ContribuyentesController contribuyentesController1 = new ContribuyentesController();
    Corregimientos corregimientos1 = new Corregimientos();
    CorregimientosController corregimientosController1 = new CorregimientosController();
 
    Recibos recibos1 = new Recibos();
    RecibosController recibosController1 = new RecibosController();
    Recibosdetalles recibosDetalles1 = new Recibosdetalles();
    RecibosdetallesController recibosdetallesController1 = new RecibosdetallesController();
    Regimen regimen1 = new Regimen();
    RegimenController regimenController1 = new RegimenController();
    Remolques remolques1 = new Remolques();
    RemolquesController remolquesController1 = new RemolquesController();
    Subgruporegimen subgruporegimen1 = new Subgruporegimen();
    SubgruporegimenController subgruporegimenController1 = new SubgruporegimenController();
    Usuarios usuarios1 = new Usuarios();
    UsuariosController usuariosController1 = new UsuariosController();
    Vehiculos vehiculos1 = new Vehiculos();
    VehiculosController vehiculosController1 = new VehiculosController();
    JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay(loadModel());
    Object[] filas = new Object[2]; // Hay tres columnas en la tabla
    int contador;
    int x;
    int numeroregistros;
    String sql;
    PreparedStatement psquery;
    ResultSet rs;
    String nombre;
    Double granTotal = 0.0;
    Double totalRecargo = 0.0;
    Double totalSinRecargo = 0.0;
    Integer totalRecibos = 0;
    Integer totalAnulados = 0;
    List<MyInformeDiarioSubgrupo> listMyInformeDiariosubgrupo = new ArrayList<MyInformeDiarioSubgrupo>();
    List<MyInformeDiarioSubgrupo> listMyInformeDiariosubgrupoReporte = new ArrayList<MyInformeDiarioSubgrupo>();
    String idrecargo = "";
    String idsubgruporecargo = "";
    String idsubgrupo;

    private static TipOfTheDayModel loadModel() {
        List tips = Arrays.asList(new DefaultTip("Tip 1", "Este proceso genera los informes diarios"),
                new DefaultTip("Tip 2", "Este proceso consume mucho tiempo dependiendo de los recibos generados."));
        DefaultTipOfTheDayModel model = new DefaultTipOfTheDayModel(tips);
        return model;
    }
    JLabel statusLabel = new JLabel();

    /** Creates new form AreaListar */
    public ContabilidadInformeDiarioSubGrupo() {
        initComponents();
        java.util.Calendar ca = java.util.Calendar.getInstance();
        java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
        jXDatePickerFechaInicio.setDate(mydate);
        jXDatePickerFechaInicio.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXDatePickerFechaTerminacion.setDate(mydate);
        jXDatePickerFechaTerminacion.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXStatusBar1.add(statusLabel);
        modelo = (DefaultTableModel) jTable.getModel();
        sql = "idmunicipio='" + MySesion.getIdmunicipio() + "' and activo='si'";
        //buscar el codigo de recargo
        if (codigosrecargoController1.query(sql)) {
            for (Codigosrecargo codigosrecargo : codigosrecargoController1.getCodigosrecargolist()) {
                idrecargo = codigosrecargo.getIdregimenrecargo();
                // buscar el codigo de subgrupo de recargo
                regimen1.setIdregimen(idrecargo);
                regimen1.setIdmunicipio(MySesion.getIdmunicipio());
                Regimen regimen = regimenController1.findByPrimaryKey(regimen1);
                if (regimen == null) {
                    Mensajeria.Mensaje("El codigo de recargo no tiene un subgrupo valido");
                    jTextArea.append("\nEl codigo de recargo no tiene un subgrupo valido");
                    jButtonProcesar.setEnabled(false);
                } else {
                    idsubgruporecargo = regimen.getIdsubgruporegimen();
                }
            }
        }
        if (idrecargo.equals("")) {
            Mensajeria.Mensaje("No se ha establecido el codigo de recargo");
            jTextArea.append("\nNo se ha establecido el codigo de recargo");
            jButtonProcesar.setEnabled(false);
        }



    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jXStatusBar1 = new org.jdesktop.swingx.JXStatusBar();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable = new javax.swing.JTable();
        jPanel2 = new javax.swing.JPanel();
        jXDatePickerFechaInicio = new org.jdesktop.swingx.JXDatePicker();
        jXDatePickerFechaTerminacion = new org.jdesktop.swingx.JXDatePicker();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea = new javax.swing.JTextArea();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextFieldTotalRecaudado = new javax.swing.JTextField();
        jToolBar1 = new javax.swing.JToolBar();
        jButtonProcesar = new javax.swing.JButton();
        jButtonImprimir = new javax.swing.JButton();
        jButtonAyuda = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Informe Diario Subgrupo");

        jTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Subgrupo", "Pago", "Codigo"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable);

        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Fecha inicio");

        jLabel2.setText("Fecha fin");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 72, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(89, 89, 89))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addContainerGap(20, Short.MAX_VALUE))
        );

        jTextArea.setColumns(20);
        jTextArea.setRows(5);
        jScrollPane2.setViewportView(jTextArea);

        jLabel3.setText("Mensajes");

        jLabel4.setText("Total Recaudado");

        jTextFieldTotalRecaudado.setEditable(false);

        jToolBar1.setRollover(true);

        jButtonProcesar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/procesar.png"))); // NOI18N
        jButtonProcesar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonProcesarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonProcesar);

        jButtonImprimir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/print.png"))); // NOI18N
        jButtonImprimir.setEnabled(false);
        jButtonImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonImprimirActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonImprimir);

        jButtonAyuda.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/help_icon.gif"))); // NOI18N
        jButtonAyuda.setToolTipText("Ayuda");
        jButtonAyuda.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAyudaActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonAyuda);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/gingresos/resources/gif/return.png"))); // NOI18N
        jButton1.setToolTipText("Cerrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 432, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(24, 24, 24)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 397, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel3)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextFieldTotalRecaudado, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 23, Short.MAX_VALUE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(60, 60, 60)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(173, 173, 173))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(88, 88, 88)
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(360, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 561, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(44, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(22, 22, 22)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTextFieldTotalRecaudado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(27, 27, 27)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jXStatusBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(77, 77, 77))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 694, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    dispose();
}//GEN-LAST:event_jButton1ActionPerformed

    private void jButtonProcesarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonProcesarActionPerformed
        Thread queryThread = new Thread() {

            public void run() {
                runQueries();
            }
        };
        queryThread.start();

    }//GEN-LAST:event_jButtonProcesarActionPerformed

    private void jButtonAyudaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAyudaActionPerformed
        tipOfTheDay.showDialog(this);
    }//GEN-LAST:event_jButtonAyudaActionPerformed

    private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonImprimirActionPerformed
        try {

            HashMap map = new HashMap();
//            map.put("p_entidad", SesionLocal.getEntidad());

            Imprimir(listMyInformeDiariosubgrupoReporte, map);

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }//GEN-LAST:event_jButtonImprimirActionPerformed
    /**
     * @param args the command line arguments
     */
//    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//
//            public void run() {
//                try {
//                    new AreaCrear().setVisible(true);
//                } catch (ParseException ex) {
//                    Logger.getLogger(AreaCrear.class.getName()).log(Level.SEVERE, null, ex);
//                }
//            }
//        });
//    }
    private void runQueries() {
        try {
            if (modelo != null) {
                while (modelo != null && modelo.getRowCount() > 0) {
                    modelo.removeRow(0);
                }
            }



            ProcesarRecibos();

            updateProgress("proceso de generacion terminado");
            Calendar calendario2 = Calendar.getInstance();
            int horaf = calendario2.get(Calendar.HOUR_OF_DAY);
            int minutosf = calendario2.get(Calendar.MINUTE);
            int segundosf = calendario2.get(Calendar.SECOND);


        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "runQueries()");
        }

    }

    private void updateProgress(final String texto) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                // Here, we can safely update the GUI
                // because we'll be called from the
                // event dispatch thread
//                 statusLabel.setText( texto+ " : " + queryNo);
                statusLabel.setText(texto);
            }
        });
    }

    private void ProcesarRecibos() {
        try {
            jButtonImprimir.setEnabled(false);
            granTotal = 0.0;
            totalAnulados = 0;
            totalSinRecargo = 0.0;
            totalRecargo = 0.0;
            totalRecibos = 0;
            jTextFieldTotalRecaudado.setText("");

          listMyInformeDiariosubgrupo.removeAll(listMyInformeDiariosubgrupo);
            java.util.Date FechaDate = jXDatePickerFechaInicio.getDate();
            java.sql.Date FechaInicio = new java.sql.Date(FechaDate.getTime());
            if (FechaInicio == null) {
                Mensajeria.Mensaje("Indique la fecha de inicio");
                jXDatePickerFechaInicio.requestFocus();
                return;
            }
            FechaDate = jXDatePickerFechaTerminacion.getDate();
            java.sql.Date FechaTerminacion = new java.sql.Date(FechaDate.getTime());
            if (FechaTerminacion == null) {
                Mensajeria.Mensaje("Indique la fecha de fin");
                jXDatePickerFechaTerminacion.requestFocus();
                return;
            }
            sql = "anulado ='no' and fecha>= '" + FechaInicio + "' and fecha<='" + FechaTerminacion + "' and idmunicipio='" + MySesion.getIdmunicipio() + "'";
            if (recibosController1.query(sql)) {
                sql = "idmunicipio='" + MySesion.getIdmunicipio() + "' and  activo='si'";
                if (subgruporegimenController1.query(sql)) {
                    for (Subgruporegimen subgruporegimen : subgruporegimenController1.getSubgruporegimenlist()) {
                        subgruporegimen1 = subgruporegimen;
                        listMyInformeDiariosubgrupo.add(new MyInformeDiarioSubgrupo(subgruporegimen1.getSubgrupo(), 0.0, subgruporegimen1.getIdsubgruporegimen()));
                    }
                    ProcesarDetallesRecibos();
                    
                    jButtonImprimir.setEnabled(true);
                } else {
                    Mensajeria.Mensaje("No existen subgrupos de regimen");
                    jTextArea.append("\nNo existen subgrupos de regimen");
                }

            } else {
                jTextArea.append("\nNo existen recibos en esa fecha");
                Mensajeria.Mensaje("No existen recibos en esa fecha");
            }
            jTextFieldTotalRecaudado.setText(MySesion.getFormateador().format(granTotal));


        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "ProcesarRecibos()");
        }
    }

    private void ProcesarDetallesRecibos() {
        try {

            Format formatter;
            formatter = new SimpleDateFormat("dd/MM/yyyy");
            contador = 0;
            for (Recibos recibos : recibosController1.getReciboslist()) {
                totalRecibos++;
                updateProgress("procesando  " + contador++ + " de " + recibosController1.getReciboslist().size());
                recibos1 = recibos;
                if (recibos1.getAnulado().equals("no")) {
//                    granTotal += recibos1.getTotalpagado();
                    sql = "idrecibo= '" + recibos1.getIdrecibo() + "' and anio='" + recibos1.getAnio() + "' and idmunicipio='" + MySesion.getIdmunicipio() + "'";
                    if (recibosdetallesController1.query(sql)) {
                        Object[] fila = new Object[3]; // Hay tres columnas en la tabla

                        for (Recibosdetalles recibosdetalles : recibosdetallesController1.getRecibosdetalleslist()) {
                                                             granTotal += recibosdetalles.getPago();
// Verificar si es recargo el detalle 
                           // if (recibosdetalles.getEsrecargo().equals("si")) {
                             if (recibosdetalles.getEsrecargo().equals("si") || recibosdetalles.getIdregimen().equals(idrecargo)) {
                                //debo acumular ese monto al codigo de recargo
                                //Recorrer la lista
                                ActualizarTotalSubgruporegimen(idsubgruporecargo, recibosdetalles.getPago());

                            } else {
                                //Encontrar el subgruporegimen
                                regimen1.setIdregimen(recibosdetalles.getIdregimen());
                                regimen1.setIdmunicipio(MySesion.getIdmunicipio());
                                Regimen regimen = regimenController1.findByPrimaryKey(regimen1);
                                if (regimen == null) {
                                    jTextArea.append("\nEl codigo de regimen " + recibosdetalles.getIdregimen() + " del recibo " + recibos1.getIdrecibo() + " tiene un subgrupo no valido");
                                } else {
                                    idsubgrupo = regimen.getIdsubgruporegimen();
                                    ActualizarTotalSubgruporegimen(idsubgrupo, recibosdetalles.getPago());
                                }


                            }
                        }
                    } else {
                        jTextArea.append("\nNo existen detalles del recibo " + recibos1.getIdrecibo());

                    }
                }
            }
         
       listMyInformeDiariosubgrupoReporte.removeAll(listMyInformeDiariosubgrupoReporte);
            Object[] filas = new Object[3];
            for (MyInformeDiarioSubgrupo myInformeDiarioSubgrupo : listMyInformeDiariosubgrupo) {
                if (myInformeDiarioSubgrupo.getPago() != 0) {
                    filas[0] = myInformeDiarioSubgrupo.getSubgrupo();
                    filas[1] = MySesion.getFormateador().format(myInformeDiarioSubgrupo.getPago());
                    filas[2] = myInformeDiarioSubgrupo.getCodigo();
                    modelo.addRow(filas);
                    listMyInformeDiariosubgrupoReporte.add(new MyInformeDiarioSubgrupo(myInformeDiarioSubgrupo.getSubgrupo(), myInformeDiarioSubgrupo.getPago(), myInformeDiarioSubgrupo.getCodigo()));
                }

            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "EncontrarDuenosRecibos()");
        }
    }

    private void ActualizarTotalSubgruporegimen(String lidsubgruporegimen, Double pago) {
        try {
            for (int i = 0; i < listMyInformeDiariosubgrupo.size(); i++) {
                if (listMyInformeDiariosubgrupo.get(i).getCodigo().equals(lidsubgruporegimen)) {
                    listMyInformeDiariosubgrupo.get(i).setPago(listMyInformeDiariosubgrupo.get(i).getPago() + pago);

                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "ActualizarTotalSubgruporegimen()");
        }
    }

    private void Imprimir(List<MyInformeDiarioSubgrupo> aux, HashMap map) throws JRException {
        try {
            map.put("P_IDMUNICIPIO", MySesion.getIdmunicipio());
            map.put("P_MUNICIPIO", MySesion.getMunicipio());
            map.put("P_NOMBREUSUARIO", MySesion.getNombreusuario());
            map.put("P_USERNAME", MySesion.getUsername());

            java.util.Date FechaDate = jXDatePickerFechaInicio.getDate();
            java.sql.Date FechaInicio = new java.sql.Date(FechaDate.getTime());
            if (FechaInicio == null) {
                Mensajeria.Mensaje("Ingrese la fecha de inicio");
                jXDatePickerFechaInicio.requestFocus();
                return;
            }
            FechaDate = jXDatePickerFechaTerminacion.getDate();
            java.sql.Date FechaTerminacion = new java.sql.Date(FechaDate.getTime());
            if (FechaTerminacion == null) {
                Mensajeria.Mensaje("Ingrese la fecha de terminacion");
                jXDatePickerFechaTerminacion.requestFocus();
                return;
            }
            DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            String inicio = formatter.format(FechaInicio);
            String terminacion = formatter.format(FechaTerminacion);
            String condicion = "Desde: (" + inicio + ") Hasta: (" + terminacion + ")";
            map.put("P_CONDICION", condicion);

            map.put("P_TOTALPAGADO", this.granTotal);
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
            //   InputStream reporte = (InputStream) getClass().getResourceAsStream("Actividad.jasper");
            InputStream reporte = (InputStream) getClass().getResourceAsStream("/org/gingresos/reportes/contabilidad/ContabilidadInformeDiarioSubgrupo.jasper");
            if (reporte == null) {
                Mensajeria.Mensaje("No se pudo cargar el reporte");
            } else {

                JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
                JasperViewer.viewReport(print, false);

            }

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButtonAyuda;
    private javax.swing.JButton jButtonImprimir;
    private javax.swing.JButton jButtonProcesar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable;
    private javax.swing.JTextArea jTextArea;
    private javax.swing.JTextField jTextFieldTotalRecaudado;
    private javax.swing.JToolBar jToolBar1;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaInicio;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaTerminacion;
    private org.jdesktop.swingx.JXStatusBar jXStatusBar1;
    // End of variables declaration//GEN-END:variables
}
